package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后推出的一个新特性:lambda表达式
 * lambda表达式可以用更精简的语法创建匿名内部类。
 * 语法:
 * (参数列表)->{
 *     方法体
 * }
 * 注意:lambda表达式创建的匿名内部类实现的接口中只能有一个抽象方法，否则无法使用!
 */
public class LambdaDemo {
    public static void main(String[] args) {
        //匿名内部类写法
        FileFilter filter = new FileFilter() {
            public boolean accept(File file) {
                return file.getName().contains("t");
            }
        };

        //lambda表达式写法
        FileFilter filter1 = (File file)->{
            return file.getName().contains("t");
        };

        //lambda表达式中参数列表里的类型可以不写
        FileFilter filter2 = (f)->{
            return f.getName().contains("t");
        };
        //如果只有一个参数，参数列表的()也可以不写
        FileFilter filter3 = f->{
            return f.getName().contains("t");
        };
        //如果方法体只有一句代码，那么"{}"可以不写，如果这句代码有return,也要一同忽略
        FileFilter filter4 = f->f.getName().contains("t");


        File dir = new File(".");
        File[] subs = dir.listFiles(f->f.getName().contains("t"));


    }
}





